//要先安装SOAP，运行命令 npm install soap
const soap = require('soap');

// Web服务的URL
const url = 'http://szlzhkj.x3322.net:21211/wsdl/IFMCommonAPI';

// 创建SOAP请求的参数
const args = {
    UserCode_: '123',
    UserPassword_: '1234',
    StartDate_: '2025-01-01',
    EndDate_: '2025-04-23',
    Company_: '',
    Sales_: '',
    Trader_: '',
    MinNo_: '',
    No_:''
};

// 调用Web服务的方法
soap.createClient(url, function(err, client) {
    if (err) {
        console.error('创建SOAP客户端时出错:', err);
        return;
    }

    // 指定要调用的方法和参数
    client.GetFeeAmount(args, function(err, result) {
        if (err) {
            console.error('调用Web服务时出错:', err);
            return;
        }

        try {
            // 从结果中提取JSON字符串并解析
            const jsonString = result && result.return && result.return.$value;
            
            if (jsonString) {
                // 解析JSON字符串为对象数组
                const feeData = JSON.parse(jsonString);
                
                // 确保所有字段都被正确处理，但不包含level字段
                const processedData = feeData.map(item => {
                    return {
                        code: item.代码,
                        name: item.名称,
                        amount: item.金额,
                        parent_code: item.上层代码
                    };
                });
                
                console.log('解析后的费用数据:', processedData);
                
                // 调用入库函数
                saveToDatabase(processedData);
            } else {
                console.error('未从响应中获取到有效的JSON数据');
            }
        } catch (parseError) {
            console.error('解析返回的JSON数据时出错:', parseError);
            console.log('原始返回数据:', result);
        }
    });
});

// 数据库保存函数
function saveToDatabase(data) {
    console.log(`准备将 ${data.length} 条费用记录保存到数据库`);
    
    // 在这里添加实际的数据库操作代码
    // 例如使用MySQL:
    /*
    const mysql = require('mysql');
    const connection = mysql.createConnection({
        host: 'localhost',
        user: 'username',
        password: 'password',
        database: 'your_database'
    });
    
    connection.connect();
    
    data.forEach(record => {
        const query = `INSERT INTO fee_data (code, name, amount, parent_code) 
                      VALUES (?, ?, ?, ?)`;
        const values = [record.code, record.name, record.amount, record.parent_code];
        
        connection.query(query, values, (error, results) => {
            if (error) throw error;
            console.log(`记录已保存: ${record.code}`);
        });
    });
    
    connection.end();
    */
    
    console.log('数据已准备好入库，请实现实际的数据库连接逻辑');
}
